<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){
	
?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 0; $ordreBDD = "ASC"; break;
		}
	}else{
		$ordre = 0;
		$ordreBDD = "ASC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "reference ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		case 3: $tri = 3; $triBDD = "parcelle ".$ordreBDD; break;
		case 4: $tri = 4; $triBDD = "usure ".$ordreBDD; break;
		default: $tri = 2; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD; break;
		}
	}else{
		$tri = 2;
		$triBDD = $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", famille ".$ordreBDD.", variete ".$ordreBDD;
	}
	
	// Traitement des options
	$optionsSet = false;
	$optionsURL = "";
	
	if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
		$optionsURL .= "&amp;opt_seulDispo=1";
		$optionsSet = true;
	}
	
?>
<?php
//------------------------------------------------------------ Récupération de la liste des touffes

	// On compte le nombre total de touffes enregistrées
	$nb_total_touffes = 0;
	
	$query_compte_touffes = "SELECT COUNT(*) ";
	$query_compte_touffes .= "FROM touffe tou ";
	$query_compte_touffes .= "INNER JOIN entree en ON en.TOU_CODETOUFFE = tou.CODETOUFFE ";
	$query_compte_touffes .= "LEFT JOIN sortie so ON so.CODETOUFFE = tou.CODETOUFFE ";
	$query_compte_touffes .= "GROUP BY tou.CODETOUFFE ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_compte_touffes .= "HAVING COUNT(DISTINCT en.CODEENTREE) > COUNT(DISTINCT so.CODESORTIE) ";
		}
	}
	
	$result_compte_touffes = mysql_query($query_compte_touffes, $connexion) or logError("COMPTE TOUFFES-".$query_compte_touffes."-".mysql_error());
	
	$tab_compte_touffes = mysql_fetch_row($result_compte_touffes);
	
	$nb_total_touffes = $tab_compte_touffes[0];
	
	mysql_free_result($result_compte_touffes);
	
	// récupération des informations des touffes
	$query_recuperation_liste_touffes = "SELECT tou.CODETOUFFE AS id, tou.REFERENCETOUFFE AS reference, par.NOMPARCELLE AS parcelle, tou.QUANTITEPIEDS as quantite, us.NOMETATUSURE AS etiquette, us.ORDREHIERARCHIQUE AS usure, f.NOMFAMILLE AS famille, g.NOMGENRE AS genre, e.NOMESPECE AS espece, v.NOMVARIETE AS variete, nbe.nbEntrees, nbs.nbSorties, en.CODEPRETENTRANT AS pretEntrant, so.CODEPRETSORTANT AS pretSortant, so.CODETOUFFE AS touffe_sortante ";
	$query_recuperation_liste_touffes .= "FROM touffe tou ";
	$query_recuperation_liste_touffes .= "LEFT JOIN parcelle par ON par.CODEPARCELLE = tou.CODEPARCELLE ";
	$query_recuperation_liste_touffes .= "LEFT JOIN etat_usure us ON us.CODEETATUSURE = tou.CODEETATUSURE ";
	$query_recuperation_liste_touffes .= "INNER JOIN (SELECT TOU_CODETOUFFE AS idTouffeEntree, COUNT(*) AS nbEntrees FROM entree WHERE TOU_CODETOUFFE IS NOT NULL GROUP BY TOU_CODETOUFFE) nbe ON nbe.idTouffeEntree = tou.CODETOUFFE ";
	$query_recuperation_liste_touffes .= "LEFT JOIN (SELECT CODETOUFFE AS idTouffeSortie, COUNT(*) AS nbSorties FROM sortie WHERE CODETOUFFE IS NOT NULL GROUP BY CODETOUFFE) nbs ON nbs.idTouffeSortie = tou.CODETOUFFE ";
	$query_recuperation_liste_touffes .= "INNER JOIN entree en ON en.TOU_CODETOUFFE = tou.CODETOUFFE AND en.DATEENTREE = (SELECT MIN(DATEENTREE) FROM entree WHERE TOU_CODETOUFFE = tou.CODETOUFFE) ";
	$query_recuperation_liste_touffes .= "LEFT JOIN sortie so ON so.CODETOUFFE = tou.CODETOUFFE AND so.DATESORTIE = (SELECT MAX(DATESORTIE) FROM sortie WHERE CODETOUFFE = tou.CODETOUFFE) ";
	$query_recuperation_liste_touffes .= "INNER JOIN taxon t ON t.CODETAXON = tou.CODETAXON ";
	$query_recuperation_liste_touffes .= "LEFT JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE ON l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_touffes .= "LEFT JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE ON l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_touffes .= "LEFT JOIN est_de_espece l3 INNER JOIN espece e ON e.CODEESPECE = l3.CODEESPECE ON l3.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_touffes .= "LEFT JOIN a_comme_variete l4 INNER JOIN variete v ON v.CODEVARIETE = l4.CODEVARIETE ON l4.CODETAXON = t.CODETAXON AND l4.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_touffes .= "WHERE 1 ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])){
			$query_recuperation_liste_touffes .= "AND (nbEntrees > nbSorties OR nbSorties IS NULL) ";
		}
	}
	$query_recuperation_liste_touffes .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_touffes .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_touffes = mysql_query($query_recuperation_liste_touffes, $connexion) or logError("RECUPERATION LISTE TOUFFES-".$query_recuperation_liste_touffes."-".mysql_error());
	
	$lst_touffes = array(); // on créé un tableau qui contient la liste des touffes ainsi que les informations de chacun
	$nb_touffes = 0;
	while($tab_recuperation_liste_touffes = mysql_fetch_assoc($result_recuperation_liste_touffes)){
	
		$lst_touffes[$nb_touffes] = $tab_recuperation_liste_touffes;
		$nb_touffes++;
		
	}

	mysql_free_result($result_recuperation_liste_touffes);

?>
<a name="liste"></a>
<h2>Liste des touffes</h2>

<?php 

   $tabth = array ('N°Entrée','Taxon','Emplacement','Etiquette','Statut');
   $extraIcon = array(); 
   
   for($i=0;$i<$nb_touffes;$i++){
      
		$vide = false;
      
      
        if(is_null($lst_touffes[$i]['nbSorties']) || $lst_touffes[$i]['nbEntrees'] > $lst_touffes[$i]['nbSorties']){
			if(!is_null($lst_touffes[$i]['quantite'])){
				if($lst_touffes[$i]['quantite'] > 0){
					$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}else{
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">vide</span>";
					$vide = true;
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #00AA00;\">disponible</span>";
			}
		}else{
			if(!is_null($lst_touffes[$i]['touffe_sortante'])){
				if(!is_null($lst_touffes[$i]['pretSortant'])){
					$statut = "<span style=\"font-weight: bold; color: #00AAFF;\">prêtée</span>";
				} else {
					$statut = "<span style=\"font-weight: bold; color: #FF0000;\">sortie</span>";
				}
			}else{
				$statut = "<span style=\"font-weight: bold; color: #FF0000;\">archivée</span>";
			}
		}
      
      if(is_null($lst_touffes[$i]['pretEntrant'])){
			if(is_null($lst_touffes[$i]['nbSorties']) || $lst_touffes[$i]['nbEntrees'] > $lst_touffes[$i]['nbSorties']){
				if($GLOBALS['USER']['level'] >= 3 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit d'ajouter
					$extraIcon[$i] = " - <a href=\"index.php?p=gestion/touffe_recolte&amp;id=".$lst_touffes[$i]['id']."\"><img src=\"images/recolter.gif\" title=\"Indiquer la récolte en sachet de graines\" alt=\"Récolter\" /></a>";
					if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
						$extraIcon[$i] .= " - <a href=\"index.php?p=gestion/sortie_ajoute&amp;touf=".$lst_touffes[$i]['id']."&amp;oglt1=3\"><img src=\"images/sortie.png\" title=\"Indiquer la sortie de la touffe\" alt=\"Sortir\" /></a>";
		   		}
				}
			}else{
            if($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin']){ // l'utilisateur a le droit de modifier
					$extraIcon[$i] = " - <a href=\"index.php?p=gestion/touffe_annule&amp;id=".$lst_touffes[$i]['id']."\"><img src=\"images/annuler.png\" title=\"Annuler la sortie de la touffe\" alt=\"Annuler sortie\" /></a>";
				}
			}
		}
      
   
      $tab_result[$i] = array (  htmlentities($lst_touffes[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 htmlentities($lst_touffes[$i]['reference'], ENT_NOQUOTES, "UTF-8"),
                                 "(".htmlentities(capitalise($lst_touffes[$i]['famille']), ENT_NOQUOTES, "UTF-8").") <b>".htmlentities(capitalise($lst_touffes[$i]['genre']), ENT_NOQUOTES, "UTF-8")." ".htmlentities(capitalise($lst_touffes[$i]['espece']), ENT_NOQUOTES, "UTF-8")."</b> <i>".htmlentities(capitalise($lst_touffes[$i]['variete']), ENT_NOQUOTES, "UTF-8")."</i>",
                                 htmlentities($lst_touffes[$i]['parcelle'], ENT_NOQUOTES, "UTF-8"),
                                 htmlentities(mb_strtolower($lst_touffes[$i]['etiquette']), ENT_NOQUOTES, "UTF-8"),
                                 $statut );
   
   }

   
   displayListe("touffe",850,$nb_total_touffes,$optionsURL,'',1,$extraIcon);



?>

<div class="options" style="margin-left: auto; margin-right: auto; width: 850px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form id="frm_options" method="post" action="index.php?p=gestion/touffe_gere&amp;l=<?php echo $page; ?>&amp;t=<?php echo $tri; ?>&amp;o=<?php echo $ordre; ?>#liste">
			<input type="checkbox" name="opt_seulDispo" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulDispo']) || isset($_GET['opt_seulDispo'])) echo "checked=\"checked\""; ?> /> <label>Seulement les touffes au jardin</label>
		</form>
	</div>
</div>
<br />
<div class="information">
	<div class="titre">Définition</div>
	<h4>Touffe :</h4>
	<p>Une touffe est un agglomérat de plantes arrivées à maturité ; mais une touffe peut être composée d'une seule plante</p>
</div>
<div class="information">
	<div class="titre">Information</div>
	<h4>Actions bloquées :</h4>
	<p>Vous ne pouvez pas récolter ou faire sortir des touffes qui sont prêtés par une structure. Utilisez la page <a href="index.php?p=gestion/pretentrant_gere">Gerer prêts</a> pour indiquer le retour du touffes à la structure d'origine.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
	
		if(isset($_SESSION)){
			include("pages/401.htm");
		}
	
	}

?>